<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>

<body>
    <h1>axios请求拦截器</h1>
    <button id="btn">发送请求</button>

    <script>
        /*创建axios实例 并配置这个实例*/
        const myAxios = axios.create({
            baseURL: '/1',//配置公共路径
            timeout: 10000,//配置超时事件
        })

        myAxios.interceptors.response.use((res) => {
            alert('响应拦截')
            //响应拦截器可以拿到响应结果
            // console.log(res);// 
            //成功 return一个值
            return res.data.data
        }, (er) => {
            //异常 把错误信息快速包装成失败的promise实例 进入catch
            // console.log(er);
            return Promise.reject(er.message, 'err')

        })
        const oBtn = document.getElementById('btn');
        oBtn.onclick = async function () {
            //拦截器 类似.then()方法 默认返回成功的promise实例 值是return的值 所以不会进入catch
            //所以我们把值包装成失败的promise实例  那么返回的的值与失败的promise实例保持一致 进入catch 捕获错误
            try {
                const result = await myAxios.get("/user", {
                    params: {
                        userId: "001"
                    }
                }) //相当于进行了 .then()

                console.log(result, "result");
            } catch (e) {
                console.log(e, '我是catch处理异常');
            }
        }
    </script>
</body>

</html>